<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        let map = new Map()//map 成为强引用，里面存了 对象，这个obj就不能被回收了
        // WeakMap  类似Map，键可以是任意类型， weak 弱  弱引用

        // WeakSet()
        let map2 = new WeakMap()
        {
            // obj局部变量--代码块中代码执行完毕，obj内存就会被回收到
            let obj = {}

            // obj被map 所引用---obj虽然是局部变量  -代码块中代码执行完毕，obj内存没有被回收到
            // map.set(obj, 1);//

            // ---map2 弱引用了 obj， 对垃圾回收机制没有影响--obj 再代码块执行完 就会被回收了
            map2.set(obj, 1)

        }

        // 类似对象，键可以是任意类型
        // 存一个键值对
        map.set('a', 1);
        // 就去一个键对应的值
        map.get('a');
        // 判断 是否有某一个键
        map.has('a')


        map.forEach((key, value) => {
            console.log(value);
        })







    </script>

</body>

</html>